#pragma once
#include "DXAMLCommon.h"


struct IPALStream
{
public:
	virtual ~IPALStream() = 0;
	virtual XUINT32 AddRef() = 0;
	virtual XUINT32 Release() = 0;
	virtual HRESULT Clone(IPALStream ** ppNewStream) = 0;
	virtual HRESULT Read(void *pv, unsigned int cb, unsigned int *pcbRead) = 0;
	virtual HRESULT Seek(__int64 qwMove, PALSeekOrigin eSeekOrigin, unsigned __int64 *pqwNewPosition) = 0;
	virtual HRESULT SetSize(unsigned __int64 qwNewSize) = 0;
	virtual HRESULT GetSize( unsigned __int64 *pqwSize) = 0;
	virtual HRESULT GetOffset(unsigned __int64 *pqOffset) = 0;
	virtual HRESULT Write(const void *pv, unsigned int cb, int offset, unsigned int *pcbWritten) = 0;
	virtual unsigned int CanSeek() = 0;
	virtual unsigned int GetCapabilities() = 0;
};